<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Publish a Pack</title>
<title>CMSIS-Pack: Publish a Pack</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="stylsheetf" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 46px;">
  <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">CMSIS-Pack
   &#160;<span id="projectnumber">Version 1.4.1</span>
   </div>
   <div id="projectbrief">Delivery Mechanism for Software Packs</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <script type="text/javascript">
		<!--
		writeComponentTabs.call(this);
		//-->
      </script>
	  </ul>
</div>
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_create_pack_publish.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Publish a Pack </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>There are multiple ways to distribute a Software Pack:</p>
<h1><a class="anchor" id="CP_LocalInstallation"></a>
Local Installation</h1>
<p>The easiest way to distribute a Software Pack is attaching it to an email or using other means of electronic distribution (for example using a company internal file server). The installation of a Software Pack is usually triggered by double-clicking the PACK file. The Pack management tool is invoked and the Pack is installed on the local machine. After installation, the Pack will be shown in the list of installed Packs (tool dependent). If the PDSC file does not contain a valid <code>&lt;url&gt;</code> element, a manual installation is required to update a Software Pack. Otherwise, Pack management tools can check for updates on the server or the local machine that is specified by <code>&lt;url&gt;</code>.</p>
<div class="image">
<img src="LocalInstallation.png" alt="LocalInstallation.png"/>
<div class="caption">
Local installation and update from URL</div></div>
 <dl class="section note"><dt>Note</dt><dd>For automatic updates on a local machine, specify the <code>&lt;url&gt;</code> using the <a href="https://en.wikipedia.org/wiki/File_URI_scheme" target="_blank">file URI scheme</a>.</dd></dl>
<h1><a class="anchor" id="CP_WebDownload"></a>
Web Download</h1>
<p>Any web server can be used to host a Software Pack (specified by the <code>&lt;url&gt;</code> element in the PDSC file). At this location, at least two files need to be present (refer to <a class="el" href="_c_p__packs.html#PackFilenames">Pack Conventions</a>):</p>
<ol type="1">
<li><b>&lt;vendor&gt;</b>.<b>&lt;name&gt;</b>.pdsc</li>
<li><b>&lt;vendor&gt;</b>.<b>&lt;name&gt;</b>.<b>&lt;version&gt;</b>.pack, where <b>&lt;version&gt;</b> refers to the latest version specified in the PDSC file.</li>
</ol>
<p>All previous versions listed in the <b>&lt;releases&gt;</b> section of the PDSC file should be present in that folder as well. This will enable customers to revert updates or to be able to download a specific version of a Software Pack (for code maintenance purposes for example).</p>
<p>Depending on the Pack management tool, a Pack Index Server might be in place that gathers information about published Packs in an index file. This information is then used in the management tool to retrieve version information and to trigger updates of Packs within the development environment.</p>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>It is important to understand how the &lt;url&gt; element works. If you specify a URL, for example <a href="http://www.keil.com/pack/" target="_blank">http://www.keil.com/pack</a>, then you have to make the PDSC file and the corresponding PACK file(s) available for download at that exact location. The naming of the files follow the standard naming rules. For example, the ARM::CMSIS PDSC and Pack files are available here:<br/>
 <a href="http://www.keil.com/pack/ARM.CMSIS.pdsc" target="_blank">http://www.keil.com/pack/ARM.CMSIS.pdsc</a> and <br/>
 <a href="http://www.keil.com/pack/ARM.CMSIS.4.3.0.pack" target="_blank">http://www.keil.com/pack/ARM.CMSIS.4.3.0.pack</a> and <br/>
 <a href="http://www.keil.com/pack/ARM.CMSIS.4.2.0.pack" target="_blank">http://www.keil.com/pack/ARM.CMSIS.4.2.0.pack</a> and ... <br/>
 At the specified location, you need to have one (unversioned) PDSC file and can have multiple versioned PACK files, but at least the latest one.</li>
<li>If the URL or the PDSC/PACK files become unavailable (temporarily or permanently), users will not be able to retrieve updates.</li>
<li>Do not replace PDSC/PACK files without updating the version number because the Pack management tools will not recognize the update unless the version has been changed.</li>
<li>Older PACKs should remain available.</li>
</ul>
</dd></dl>
<div class="image">
<img src="WebInstallation.png" alt="WebInstallation.png"/>
<div class="caption">
Web installation and update</div></div>
 <h1><a class="anchor" id="CP_KeilComPack"></a>
Publishing on www.keil.com/pack</h1>
<p>ARM tries to maintain a list of all available Software Packs. If a Software Pack is intended to be on that list, its PDSC file needs to be sent to to the following email address: <a href="#" onclick="location.href='mai'+'lto:'+'cms'+'is'+'@ar'+'m.'+'com'; return false;">cmsis<span style="display: none;">.nosp@m.</span>@arm<span style="display: none;">.nosp@m.</span>.com</a>. The PDSC file will be manually XML validated. The following content will be processed in order to generate the web site and index file (<a href="www.keil.com/pack/index.idx" class="el" target="_blank">www.keil.com/pack/index.idx</a>):</p>
<ul>
<li>Version</li>
<li>Release Notes</li>
<li>Devices</li>
<li>Boards</li>
<li>Examples</li>
<li>Software Components</li>
</ul>
<p>Please allow up to seven working days for the process. If the file contains any errors, you will be notified. Otherwise, it will be uploaded to <a href="www.keil.com/pack" class="el" target="_blank">www.keil.com/pack</a>. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-Pack by ARM Ltd. All rights reserved.
	<!--
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 
	-->
	</li>
  </ul>
</div>
</body>
</html>
